General guidelines for libxmp 5:

We want to make the API usable in more languages/platforms, so don't
expose pointers, and don't assume we have stdio. Just load from a buffer
in memory and render frames. Don't be C-centric or POSIX-centric.

Focus on the main player business. Remove decompression from the library
so that front-ends can handle archives.

Specific things to do:

- envelope pool like digitrakker
  * allows envelope setting effect in digitrakker
  * saves memory

- add support for extra fine volume slides
  * used in digitrakker

- add support to sample rate to decouple period/pitch
  * needed to adjust MED IFFOCT octave offset
  * needed to properly map IT samples
  * rate affects period flag per sample

- add missing fields to instrument/sample
  * random pan variation
  * sample sustain loop
  * c5spd that affects transposition
  * c5spd that doesn't affect transposition (MDL, MED multisamples)

- true bidirectional sample loop processing
  * saves memory used to unroll loops
  * saves memory used to unroll sustain loops

- remove direct access to structure pointers

- lower MIN_BPM to 10

- fix CFLAGS mess

- alloc buffer externally?

- handle stereo samples?

- flags and mixer info in frame_info
  * to inform mixer type in use
